#include "digital.h"

extern SYS_TIME_T sys_time_t;

DIGITAL_T digital_t;
INT8U code digital_code[] = {NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, SYMBOL_SUB};
INT8U digital_buffer[DIGITAL_BUFF_MAX];

/*****************************************************************************
 �� �� ��: digital_init
 ��������  : ����ܳ�ʼ������
 �������  : ��      
 �������  : ��
 �� �� ֵ: ��
 �޸���ʷ     :
  1.��    ��   : 2019��03��03��
    ��    ��   : ΢Ц����
    �޸�����   : ����
*****************************************************************************/
void digital_init(void)
{
    digital_t.Bitn = 0;
    digital_t.delay_us = 1; 
    mem_set(digital_buffer, 0x00, 8);
}

/*****************************************************************************
 �� �� ��: digital_display_process
 ��������  : ���������д��
 �������  : _place    --λ
           _data   --����
           _length --���ݸ���
 �������  : ��
 �� �� ֵ: ��
 �޸���ʷ     :
  1.��    ��   : 2019��03��03��
    ��    ��   : ΢Ц����
    �޸�����   : ����
*****************************************************************************/
INT8U digital_write_data(INT8U _bit, INT8U _data)
{
    digital_buffer[_bit] = _data;
    return 1;
}

/*****************************************************************************
 �� �� ��: digital_display_process
 ��������  : �������ʾ��������
 �������  : ��      
 �������  : ��
 �� �� ֵ: ��
 �޸���ʷ     :
  1.��    ��   : 2019��03��03��
    ��    ��   : ΢Ц����
    �޸�����   : ����
*****************************************************************************/
void digital_display_process(void)
{
    if(CLOCK_SETTING == sys_time_t.state)
    {
        return;
    }
    digital_t.delay_us --;
    if(0 == digital_t.delay_us)
    {
        DIGITAL_SEND_NUM(0x00);
        DIGITAL_SELECT_BIT(digital_t.Bitn);
        DIGITAL_SEND_NUM(digital_code[digital_buffer[digital_t.Bitn]]);
        digital_t.delay_us = 1;

        digital_t.Bitn ++;
        if(digital_t.Bitn > 7)
        {
           digital_t.Bitn = 0;
        }
    }
        return;
}
